/*
 * @Author: your name
 * @Date: 2020-12-28 10:11:53
 * @LastEditTime: 2021-01-05 11:43:06
 * @LastEditors: Please set LastEditors
 * @Description: 日期格式转换
 * @FilePath: \html\src\utils\extend.js
 */
/**
		 * 将字符串的时间格式化成指定文本
		 * @param {format} 日期格式，比如 yyyy-MM-dd H:m:s => 2019-08-16 8:36:3
		 * @returns {String} 返回对应时间格式的字符串
		 */
// eslint-disable-next-line no-extend-native
String.prototype.timeFormat = function(format) {
  const str = String(this)
  let _str = str.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/-/g, '/')
  const i = _str.indexOf('.')
  if (i !== -1) {
    _str = _str.slice(0, i)
  }
  let time
  time = new Date(_str)
  if (time === 'Invalid Date') {
    time = new Date(str)
  }
  const o = {
    'M+': time.getMonth() + 1,
    'd+': time.getDate(),
    'H+': time.getHours(),
    'm+': time.getMinutes(),
    's+': time.getSeconds(),
    'q+': Math.floor((time.getMonth() + 3) / 3), // 季度
    'f+': time.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(format)) {
    format = format
      .replace(RegExp.$1, time.getFullYear() + '')
      .substr(4 - RegExp.$1.length)
  }
  for (const k in o) {
    if (new RegExp('(' + k + ')').test(format)) {
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length === 1
          ? o[k]
          : ('00' + o[k]).substr(('' + o[k]).length)
      )
    }
  }
  return format
}
/**
		 * 将日期时间的时间格式化成指定文本
		 * @param {format} 日期格式，比如 yyyy-MM-dd H:m:s => 2019-08-16 8:36:3
		 * @returns {String} 返回对应时间格式的字符串
		 */
// eslint-disable-next-line no-extend-native
Date.prototype.timeFormat = function(format) {
  const time = this
  const o = {
    'M+': time.getMonth() + 1,
    'd+': time.getDate(),
    'H+': time.getHours(),
    'm+': time.getMinutes(),
    's+': time.getSeconds(),
    'q+': Math.floor((time.getMonth() + 3) / 3), // 季度
    'f+': time.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(format)) {
    format = format
      .replace(RegExp.$1, time.getFullYear() + '')
      .substr(4 - RegExp.$1.length)
  }
  for (const k in o) {
    if (new RegExp('(' + k + ')').test(format)) {
      format = format.replace(
        RegExp.$1,
        RegExp.$1.length === 1
          ? o[k]
          : ('00' + o[k]).substr(('' + o[k]).length)
      )
    }
  }
  return format
}
